home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
AIncludes
/
CodeFragments.a
< prev
next >
Wrap
Text File
|
1996-05-01
|
22KB
|
689 lines
;
; File: CodeFragments.a
;
; Contains: Public Code Fragment Manager Interfaces.
;
; Version: Technology: System 7 and System 8
; Release: Universal Interfaces 3.0d3 on Copland DR1
;
; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
;
; Bugs?: If you find a problem with this file, send the file and version
; information (from above) and the problem description to:
;
; Internet: apple.bugs@applelink.apple.com
; AppleLink: APPLE.BUGS
;
;
;
; *
; ===========================================================================================
; The Code Fragment Manager API
; =============================
;
IF &TYPE('__CODEFRAGMENTS__') = 'UNDEFINED' THEN
__CODEFRAGMENTS__ SET 1
IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
include 'Types.a'
ENDIF
IF &TYPE('__FILES__') = 'UNDEFINED' THEN
include 'Files.a'
ENDIF
IF FOR_SYSTEM8_PREEMPTIVE THEN
IF &TYPE('__KERNEL__') = 'UNDEFINED' THEN
include 'Kernel.a'
ENDIF
IF &TYPE('__FILEMANAGERTYPES__') = 'UNDEFINED' THEN
include 'FileManagerTypes.a'
ENDIF
IF &TYPE('__TEXTOBJECTS__') = 'UNDEFINED' THEN
include 'TextObjects.a'
ENDIF
ENDIF
;
; ß
; ===========================================================================================
; Universal types and constants
; =============================
;
IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
;
; ----------------------------------------------------------------------------
; These declarations are for System 7 and all System 8 execution environments.
;
kCFragResourceType EQU 'cfrg'
kCFragResourceID EQU 0
kCFragLibraryFileType EQU 'shlb'
kCFragAllFileTypes EQU $FFFFFFFF
; typedef OSType CFragArchitecture
kPowerPCCFragArch EQU 'pwpc'
kMotorola68KCFragArch EQU 'm68k'
kAnyCFragArch EQU $3F3F3F3F
IF GENERATINGPOWERPC THEN
kCompiledCFragArch EQU 'pwpc'
ENDIF
IF GENERATING68K THEN
kCompiledCFragArch EQU 'm68k'
ENDIF
; typedef UInt32 CFragVersionNumber
kNullCFragVersion EQU 0
kWildcardCFragVersion EQU $FFFFFFFF
; typedef UInt8 CFragUsage
kImportLibraryCFrag EQU 0 ; Standard CFM import library.
kApplicationCFrag EQU 1 ; Macintosh application.
kDropInAdditionCFrag EQU 2 ; Private extension to an application or library.
kIsCompleteCFrag EQU 0 ; A "base" fragment, not an update.
kFirstCFragUpdate EQU 1 ; The first update, others are numbered 2, 3, ...
kCFragGoesToEOF EQU 0
; typedef UInt8 CFragLocatorKind
kMemoryCFragLocator EQU 0 ; Container is already addressable.
kDataForkCFragLocator EQU 1 ; Container is in a file's data fork.
kResourceCFragLocator EQU 2 ; Container is in a file's resource fork.
;
; --------------------------------------------------------------------------------------
; A 'cfrg' resource consists of a header followed by a sequence of variable length
; members. The constant kDefaultCFragNameLen only provides for a legal ANSI declaration
; and for a reasonable display in a debugger. The actual name field is cut to fit.
; There may be "extensions" after the name, the memberSize field includes them. The
; general form of an extension is a 16 bit type code followed by a 16 bit size in bytes.
; Only one standard extension type is defined at present, it is used by SOM's searching
; mechanism.
;
CFragUsage1Union RECORD 0
; ! Meaning differs depending on value of "usage".
appStackSize ds.l 1 ; offset: $0 (0) ; If the fragment is an application. (Not used by CFM!)
sizeof EQU * ; size: $4 (4)
ENDR
CFragUsage2Union RECORD 0
; ! Meaning differs depending on value of "usage".
appSubdirID ds.w 1 ; offset: $0 (0) ; If the fragment is an application.
sizeof EQU * ; size: $2 (2)
ENDR
CFragWhere1Union RECORD 0
; ! Meaning differs depending on value of "where".
spaceID ds.l 1 ; offset: $0 (0) ; If the fragment is in memory. (Actually an AddressSpaceID.)
ORG 0
forkKind ds.l 1 ; offset: $0 (0) ; If the fragment is in an arbitrary byte stream fork.
sizeof EQU * ; size: $4 (4)
ENDR
CFragWhere2Union RECORD 0
; ! Meaning differs depending on value of "where".
forkInstance ds.w 1 ; offset: $0 (0) ; If the fragment is in an arbitrary byte stream fork.
sizeof EQU * ; size: $2 (2)
ENDR
kDefaultCFragNameLen EQU 16
CFragResourceMember RECORD 0
architecture ds.l 1 ; offset: $0 (0)
reservedA ds.w 1 ; offset: $4 (4) ; ! Must be zero!
reservedB ds.b 1 ; offset: $6 (6) ; ! Must be zero!
updateLevel ds.b 1 ; offset: $7 (7)
currentVersion ds.l 1 ; offset: $8 (8)
oldDefVersion ds.l 1 ; offset: $C (12)
uUsage1 ds CFragUsage1Union ; offset: $10 (16)
uUsage2 ds CFragUsage2Union ; offset: $14 (20)
usage ds.b 1 ; offset: $16 (22)
where ds.b 1 ; offset: $17 (23)
offset ds.l 1 ; offset: $18 (24)
length ds.l 1 ; offset: $1C (28)
uWhere1 ds CFragWhere1Union ; offset: $20 (32)
uWhere2 ds CFragWhere2Union ; offset: $24 (36)
extensionCount ds.w 1 ; offset: $26 (38) ; The number of extensions beyond the name.
memberSize ds.w 1 ; offset: $28 (40) ; Size in bytes, includes all extensions.
name ds.b 16 ; offset: $2A (42) ; ! Actually a sized PString.
sizeof EQU * ; size: $3A (58)
ENDR
; typedef struct CFragResourceMember * CFragResourceMemberPtr
CFragResourceExtensionHeader RECORD 0
extensionKind ds.w 1 ; offset: $0 (0)
extensionSize ds.w 1 ; offset: $2 (2)
sizeof EQU * ; size: $4 (4)
ENDR
; typedef struct CFragResourceExtensionHeader * CFragResourceExtensionHeaderPtr
CFragResourceSearchExtension RECORD 0
header ds CFragResourceExtensionHeader ; offset: $0 (0)
libKind ds.l 1 ; offset: $4 (4)
qualifiers ds.b 1 ; offset: $8 (8) <-- really an array of length one ; ! Actually four PStrings.
ORG 10
sizeof EQU * ; size: $A (10)
ENDR
; typedef struct CFragResourceSearchExtension * CFragResourceSearchExtensionPtr
kCFragResourceSearchExtensionKind EQU $30EE
CFragResource RECORD 0
reservedA ds.l 1 ; offset: $0 (0) ; ! Must be zero!
reservedB ds.l 1 ; offset: $4 (4) ; ! Must be zero!
reservedC ds.w 1 ; offset: $8 (8) ; ! Must be zero!
version ds.w 1 ; offset: $A (10)
reservedD ds.l 1 ; offset: $C (12) ; ! Must be zero!
reservedE ds.l 1 ; offset: $10 (16) ; ! Must be zero!
reservedF ds.l 1 ; offset: $14 (20) ; ! Must be zero!
reservedG ds.l 1 ; offset: $18 (24) ; ! Must be zero!
reservedH ds.w 1 ; offset: $1C (28) ; ! Must be zero!
memberCount ds.w 1 ; offset: $1E (30)
firstMember ds CFragResourceMember ; offset: $20 (32)
sizeof EQU * ; size: $5A (90)
ENDR
; typedef struct CFragResource * CFragResourcePtr
kCurrCFragResourceVersion EQU 1
; typedef UInt32 CFragLoadOptions
kLoadCFrag EQU $0001 ; Try to use existing copy, load if not found.
kFindCFrag EQU $0002 ; Try find an existing copy, don't load if not found.
kPrivateCFragCopy EQU $0005 ; Load a new private copy.
kUnresolvedCFragSymbolAddress EQU 0
; typedef UInt8 CFragSymbolClass
kCodeCFragSymbol EQU 0
kDataCFragSymbol EQU 1
kTVectorCFragSymbol EQU 2
kTOCCFragSymbol EQU 3
kGlueCFragSymbol EQU 4
ENDIF
;
; ß
; ===========================================================================================
; System 7 Services (Deprecated in System 8)
; ==========================================
;
IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN
;
; ---------------------------------------------------------------------------------
; These declarations are for System 7 and the System 8 cooperative environment, but
; should be avoided under System 8. Better alternatives exist for System 8.
;
;
; pascal OSErr GetSharedLibrary(ConstStr63Param libName, CFragArchitecture archType, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetSharedLibrary
move.w #$0001,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION GetSharedLibrary
ENDIF
;
; pascal OSErr GetDiskFragment(const FSSpec *fileSpec, UInt32 offset, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetDiskFragment
move.w #$0002,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION GetDiskFragment
ENDIF
;
; pascal OSErr GetMemFragment(void *memAddr, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetMemFragment
move.w #$0003,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION GetMemFragment
ENDIF
;
; pascal OSErr CloseConnection(CFragConnectionID *connID)
;
IF ¨ GENERATINGCFM THEN
Macro
_CloseConnection
move.w #$0004,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION CloseConnection
ENDIF
;
; pascal OSErr FindSymbol(CFragConnectionID connID, ConstStr255Param symName, Ptr *symAddr, CFragSymbolClass *symClass)
;
IF ¨ GENERATINGCFM THEN
Macro
_FindSymbol
move.w #$0005,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION FindSymbol
ENDIF
;
; pascal OSErr CountSymbols(CFragConnectionID connID, long *symCount)
;
IF ¨ GENERATINGCFM THEN
Macro
_CountSymbols
move.w #$0006,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION CountSymbols
ENDIF
;
; pascal OSErr GetIndSymbol(CFragConnectionID connID, long symIndex, Str255 symName, Ptr *symAddr, CFragSymbolClass *symClass)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetIndSymbol
move.w #$0007,-(sp)
dc.w $AA5A
EndM
ELSE
IMPORT_CFM_FUNCTION GetIndSymbol
ENDIF
ENDIF
;
; ß
; ===========================================================================================
; System 8 Services (Not available in System 7)
; =============================================
;
IF FOR_SYSTEM8_PREEMPTIVE THEN
;
; ---------------------------------------------------------------------------------
; These declarations are for all System 8 execution environments, but not System 7.
;
kPatchCFragUpdateLevel EQU 255
kByteStreamCFragLocator EQU 3
kNamedFragmentCFragLocator EQU 4
kNamedLibraryCFragLocator EQU 4 ; !!! Remove in D12!
kPrivilegedCFragMask EQU $0010 ; ! May be removed in the future!
kResidentCFragMask EQU $0020 ; ! May be removed in the future!
kTreatCFragAsLibraryMask EQU $0040 ; Used in GetXyzFragment to recognize by name too.
kPrivilegedCFragFlag EQU $0010 ; !!! Remove in D12!
kResidentCFragFlag EQU $0020 ; !!! Remove in D12!
kMainCFragSymbolIndex EQU -1
kInitCFragSymbolIndex EQU -2
kTermCFragSymbolIndex EQU -3
CFragRegisteredFileInfo RECORD 0
fileRef ds.l 1 ; offset: $0 (0)
fileType ds.l 1 ; offset: $4 (4)
nestingDepth ds.l 1 ; offset: $8 (8)
sizeof EQU * ; size: $C (12)
ENDR
kCFragRegisteredFileInfoVersion EQU $00010001
; typedef UInt8 CFragCompatibility
CFragBothCompatible EQU 0
CFragClientTooOld EQU 1
CFragProviderTooOld EQU 2
; typedef UInt32 CFragShortVersionPair
;
; extern CFragCompatibility CFragCheckCompatibility(UInt32 clientPreferredVersion, UInt32 clientOldImpVersion, UInt32 providerCurrentVersion, UInt32 providerOldDefVersion)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragCheckCompatibility
ENDIF
;
; extern CFragCompatibility CFragCheckShortCompatibility(UInt32 clientVersions, UInt32 providerVersions)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragCheckShortCompatibility
ENDIF
;
; extern Boolean CFragHasFileLocation(CFragLocatorKind where)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragHasFileLocation
ENDIF
;
; extern Boolean CFragHasUnresolvedImports(CFragConnectionID connID)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragHasUnresolvedImports
ENDIF
;
; extern OSStatus CFragPrepareNamedFragment(ConstStr63Param fragName, CFragUsage usage, CFragArchitecture archType, CFragVersionNumber preferredVersion, CFragVersionNumber oldestVersion, CFragLoadOptions loadFlags, CFragConnectionID *connID, LogicalAddress *mainAddr, TextObject optErrMsg)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragPrepareNamedFragment
ENDIF
;
; extern OSStatus CFragPrepareFromDiskFork(FSObjectRef fileSpec, FSForkType forkTag, ItemCount forkInstance, ByteCount offset, ByteCount length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, LogicalAddress *mainAddr, TextObject optErrMsg)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragPrepareFromDiskFork
ENDIF
;
; extern OSStatus CFragPrepareFromMemory(LogicalAddress fragAddr, ByteCount length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, LogicalAddress *mainAddr, TextObject optErrMsg)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragPrepareFromMemory
ENDIF
;
; extern OSStatus CFragCloseConnection(CFragConnectionID *connID)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragCloseConnection
ENDIF
;
; extern OSStatus CFragFindNamedSymbol(CFragConnectionID connID, ConstStr255Param symName, LogicalAddress *symAddr, CFragSymbolClass *symClass)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragFindNamedSymbol
ENDIF
;
; extern OSStatus CFragCountSymbols(CFragConnectionID connID, ItemCount *symCount)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragCountSymbols
ENDIF
;
; extern OSStatus CFragGetIndexedSymbol(CFragConnectionID connID, SInt32 symIndex, Str255 symName, LogicalAddress *symAddr, CFragSymbolClass *symClass)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragGetIndexedSymbol
ENDIF
;
; extern OSStatus CFragGetFileSpec(CFragConnectionID connectionID, FSObjectRef *fileSpec)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragGetFileSpec
ENDIF
;
; extern OSStatus CFragGetFragmentName(CFragConnectionID connectionID, Str63 name)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragGetFragmentName
ENDIF
;
; extern OSStatus CFragRegisterFileFragments(KernelProcessID processID, FSObjectRef fileSpec, OSType fileType, ItemCount nestingDepth)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragRegisterFileFragments
ENDIF
;
; extern OSStatus CFragUnregisterFileFragments(KernelProcessID processID, FSObjectRef fileSpec, OSType fileType, ItemCount nestingDepth)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragUnregisterFileFragments
ENDIF
;
; extern OSStatus CFragGetRegisteredFiles(KernelProcessID processID, ItemCount requestedCount, ItemCount *totalCount, PBVersion infoVersion, CFragRegisteredFileInfo *registeredFiles)
;
IF GENERATINGCFM THEN
IMPORT_CFM_FUNCTION CFragGetRegisteredFiles
ENDIF
ENDIF
;
; ß
; ===========================================================================================
; Initialization & Termination Routines
; =====================================
; -----------------------------------------------------------------------------------------
; A fragment's initialization and termination routines are called when a new incarnation of
; the fragment is created or destroyed, respectively. Exactly when this occurs depends on
; what kinds of section sharing the fragment has and how the fragment is prepared. Import
; libraries have at most one incarnation per process. Fragments prepared with option
; kPrivateCFragCopy may have many incarnations per process.
; The initialization function is passed a pointer to an initialization information structure
; and returns an OSErr. If an initialization function returns a non-zero value the entire
; closure of which it is a part fails. The CFragInitBlock type has different visible parts
; under System 7 and System 8, but is of course the same internally. The C prototype for an
; initialization function is:
; pascal OSErr CFragInitFunction ( const CFragInitBlock * initBlock );
; The termination procedure takes no parameters and returns nothing. The C prototype for a
; termination procedure is:
; pascal void CFragTermProcedure ( void );
;
IF FOR_OPAQUE_SYSTEM_DATA_STRUCTURES THEN
;
; --------------------------------------------------------------------------------------
; These declarations are the preferred form for System 8, hiding implementation details.
;
CFragOpaqueInitBlock RECORD 0
processID ds.l 1 ; offset: $0 (0)
closureID ds.l 1 ; offset: $4 (4)
connectionID ds.l 1 ; offset: $8 (8)
reservedA ds.l 8 ; offset: $C (12)
sizeof EQU * ; size: $2C (44)
ENDR
; typedef struct CFragOpaqueInitBlock * CFragOpaqueInitBlockPtr
CFragInitBlock RECORD 0
f ds CFragOpaqueInitBlock
sizeof EQU * ; size: $2C (44)
ENDR
; typedef CFragOpaqueInitBlockPtr CFragInitBlockPtr
ELSE
;
; --------------------------------------------------------------------------------------
; These declarations are for System 7. They may be used in System 8 but expose details.
;
CFragSystem7MemoryLocator RECORD 0
address ds.l 1 ; offset: $0 (0)
length ds.l 1 ; offset: $4 (4)
inPlace ds.b 1 ; offset: $8 (8)
reservedA ds.b 1 ; offset: $9 (9) ; ! Must be zero!
reservedB ds.w 1 ; offset: $A (10) ; ! Must be zero!
sizeof EQU * ; size: $C (12)
ENDR
CFragSystem7DiskFlatLocator RECORD 0
fileSpec ds.l 1 ; offset: $0 (0)
offset ds.l 1 ; offset: $4 (4)
length ds.l 1 ; offset: $8 (8)
sizeof EQU * ; size: $C (12)
ENDR
; ! This must have a file specification at the same offset as a disk flat locator!
CFragSystem7SegmentedLocator RECORD 0
fileSpec ds.l 1 ; offset: $0 (0)
rsrcType ds.l 1 ; offset: $4 (4)
rsrcID ds.w 1 ; offset: $8 (8)
reservedA ds.w 1 ; offset: $A (10) ; ! Must be zero!
sizeof EQU * ; size: $C (12)
ENDR
CFragSystem7Locator RECORD 0
where ds.l 1 ; offset: $0 (0)
onDisk ds CFragSystem7DiskFlatLocator ; offset: $4 (4)
ORG 4
inMem ds CFragSystem7MemoryLocator ; offset: $4 (4)
ORG 4
inSegs ds CFragSystem7SegmentedLocator ; offset: $4 (4)
sizeof EQU * ; size: $10 (16)
ENDR
; typedef struct CFragSystem7Locator * CFragSystem7LocatorPtr
CFragSystem7InitBlock RECORD 0
contextID ds.l 1 ; offset: $0 (0)
closureID ds.l 1 ; offset: $4 (4)
connectionID ds.l 1 ; offset: $8 (8)
fragLocator ds CFragSystem7Locator ; offset: $C (12)
libName ds.l 1 ; offset: $1C (28)
reservedA ds.l 1 ; offset: $20 (32) ; ! Must be zero!
sizeof EQU * ; size: $24 (36)
ENDR
; typedef struct CFragSystem7InitBlock * CFragSystem7InitBlockPtr
CFragInitBlock RECORD 0
f ds CFragSystem7InitBlock
sizeof EQU * ; size: $24 (36)
ENDR
; typedef CFragSystem7InitBlockPtr CFragInitBlockPtr
ENDIF
;
; ß
; ===========================================================================================
; Old Name Spellings
; ==================
; -------------------------------------------------------------------------------------------
; We've tried to reduce the risk of name collisions in the future by introducing the phrase
; "CFrag" into constant and type names. The old names are defined below in terms of the new.
;
IF OLDROUTINENAMES THEN
; typedef CFragConnectionID ConnectionID
; typedef CFragLoadOptions LoadFlags
; typedef CFragSymbolClass SymClass
InitBlock RECORD 0
f ds CFragInitBlock
sizeof EQU * ; size: $2C (44)
ENDR
; typedef CFragInitBlockPtr InitBlockPtr
IF ¨ FOR_OPAQUE_SYSTEM_DATA_STRUCTURES THEN
MemFragment RECORD 0
f ds CFragSystem7MemoryLocator
sizeof EQU * ; size: $C (12)
ENDR
DiskFragment RECORD 0
f ds CFragSystem7DiskFlatLocator
sizeof EQU * ; size: $C (12)
ENDR
SegmentedFragment RECORD 0
f ds CFragSystem7SegmentedLocator
sizeof EQU * ; size: $C (12)
ENDR
FragmentLocator RECORD 0
f ds CFragSystem7Locator
sizeof EQU * ; size: $10 (16)
ENDR
; typedef CFragSystem7LocatorPtr FragmentLocatorPtr
CFragHFSMemoryLocator RECORD 0
f ds CFragSystem7MemoryLocator
sizeof EQU * ; size: $C (12)
ENDR
CFragHFSDiskFlatLocator RECORD 0
f ds CFragSystem7DiskFlatLocator
sizeof EQU * ; size: $C (12)
ENDR
CFragHFSSegmentedLocator RECORD 0
f ds CFragSystem7SegmentedLocator
sizeof EQU * ; size: $C (12)
ENDR
CFragHFSLocator RECORD 0
f ds CFragSystem7Locator
sizeof EQU * ; size: $10 (16)
ENDR
; typedef CFragSystem7LocatorPtr CFragHFSLocatorPtr
ENDIF
kPowerPCArch EQU 'pwpc'
kMotorola68KArch EQU 'm68k'
kAnyArchType EQU $3F3F3F3F
kNoLibName EQU 0
kNoConnectionID EQU 0
kLoadLib EQU $0001
kFindLib EQU $0002
kNewCFragCopy EQU $0005
kLoadNewCopy EQU $0005
kUseInPlace EQU $80
kCodeSym EQU 0
kDataSym EQU 1
kTVectSym EQU 2
kTOCSym EQU 3
kGlueSym EQU 4
kInMem EQU 0
kOnDiskFlat EQU 1
kOnDiskSegmented EQU 2
kIsLib EQU 0
kIsApp EQU 1
kIsDropIn EQU 2
kFullLib EQU 0
kUpdateLib EQU 1
kWholeFork EQU 0
kCFMRsrcType EQU 'cfrg'
kCFMRsrcID EQU 0
kSHLBFileType EQU 'shlb'
kUnresolvedSymbolAddress EQU 0
kPowerPC EQU 'pwpc'
kMotorola68K EQU 'm68k'
ENDIF
ENDIF ; __CODEFRAGMENTS__